package org.example.struct.array;

import com.alibaba.fastjson2.JSON;

/**
 * @author liyishan
 * @date 2023/8/21 10:34
 * @apiNote
 */

public class Test01089DuplicateZeros {
    public static void main(String[] args) {
        int[] arr = new int[]{0,0,1,0,1};
        test(arr);
        System.out.println(JSON.toJSON(arr));
    }

    public static void test(int[] arr) {
        int n = arr.length;
        int top = 0;
        int i = -1;
        //找到需要处理的最后一个元素。
        while (top < n) {
            i++;
            if(arr[i] != 0){
                top ++;
            }else{
                top+=2;
            }
        }
        //需要考虑数组越界问题，上面while种top+2会超过数组长度
        int j = n-1;
        if(top == n+1){
            arr[j] = 0;
            j--;
            i--;
        }
        //双指针 从最后一个处理使其等于之前找到的最后一个元素
        while(j>=0){
            arr[j] = arr[i];
            j--;
            if(arr[i] == 0){
                arr[j] = arr[i];
                j--;
            }
            i--;
        }
    }
}
